A livello fondamentale, una lista collegata è una struttura dati ricorsiva definita dalla propria assenza o dalla sua composizione. Una lista è o vuota (rappresentata come []) oppure è composta da un Testa contenente un singolo valore e un Coda che è a sua volta una lista completa.
1. La Definizione Ricorsiva
Definendo la coda come "una lista stessa", consentiamo un incastro infinito. Questo è illustrato dalla costruzione di [ 1 | [ 2 | [ 3 | [ ] ] ] ], dove ogni operatore pipe (|) separa il valore immediato dalla struttura rimanente.
2. Primitivo vs. Astrazione
Le liste primitive nel VM Erlang (BEAM) sono strutture semplici. Comportamenti come List.flatten/1 sono astrazioni fornite dal modulo List di Elixir. La struttura dati grezza non "sa" come piattificarla da sola; è il modulo a fornire la logica per attraversare le teste e code annidate.
3. L'Analogo delle Bambole Russe
Pensa a una lista collegata come a un insieme di bambole russe. La bambola più esterna è la Testa. Quando la apri, trovi esattamente una cosa: un'altra bambola (la Coda). Solo quando apri l'ultima, più piccola bambola e non trovi nulla all'interno raggiungi lo stato Vuoto vuoto.